// 认证相关的公共函数

// API基础URL
const API_BASE = 'http://175.24.128.174:8080';

// 获取本地存储的token
function getToken() {
    return localStorage.getItem('oj_token');
}

// 获取本地存储的用户信息
function getUserInfo() {
    const userStr = localStorage.getItem('oj_user');
    return userStr ? JSON.parse(userStr) : null;
}

// 保存token和用户信息
function saveAuth(token, user) {
    localStorage.setItem('oj_token', token);
    localStorage.setItem('oj_user', JSON.stringify(user));
}

// 清除认证信息
function clearAuth() {
    localStorage.removeItem('oj_token');
    localStorage.removeItem('oj_user');
}

// 检查是否已登录
function isLoggedIn() {
    return getToken() !== null;
}

// 获取带认证头的fetch配置
function getAuthHeaders() {
    const token = getToken();
    return {
        'Content-Type': 'application/json;charset=utf-8',
        'Authorization': token ? `Bearer ${token}` : ''
    };
}

// 显示消息提示
function showMessage(elementId, message, type) {
    const messageEl = document.getElementById(elementId);
    messageEl.textContent = message;
    messageEl.className = `message ${type}`;
    messageEl.style.display = 'block';
    
    // 3秒后自动隐藏
    setTimeout(() => {
        messageEl.style.display = 'none';
    }, 3000);
}

// 登出功能
async function logout() {
    const token = getToken();
    if (!token)
    {
        alert('您尚未登录,无需登出');
        // setTimeout(() => {
        // window.location.href = '/login.html';
        // }, 1500);
        window.location.href = '/login.html';//跳转到登陆界面
        return;
    }
    
    try {
        // 调用后端登出接口
        await fetch(`${API_BASE}/logout`, {
            method: 'POST',
            headers: getAuthHeaders()
        });
    } catch (error) {
        console.error('Logout error:', error);
    } finally {
        // 实际就算有token,也可能会面临token失效
        // 登出可能失败,可能成功
        // 无论成功失败都清除本地认证信息
        clearAuth();
        window.location.href = '/login.html';
    }
}

// 更新导航栏用户状态
function updateNavbar() {
    const userInfoEl = document.getElementById('userInfo');
    const loginLinkEl = document.getElementById('loginLink');
    
    if (isLoggedIn()) {
        const user = getUserInfo();
        // 显示用户信息和登出按钮
        userInfoEl.style.display = 'flex';
        loginLinkEl.style.display = 'none';
        document.getElementById('navUsername').textContent = user.username;
        document.getElementById('navUserId').textContent = user.user_id;
    } else {
        // 显示登录链接
        userInfoEl.style.display = 'none';
        loginLinkEl.style.display = 'block';
    }
}

// 页面加载时更新导航栏
document.addEventListener('DOMContentLoaded', updateNavbar);